home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1997 August / Macworld (1997-08).dmg / Serious Demos / Crimson Demo / Crimson Demos / File Info / FInfoMain < prev    next >
Text File  |  1997-06-17  |  4KB  |  125 lines

  1. *********************************************************
  2. *                                                                                                              *
  3. *        Process File                                                                                   *
  4. *********************************************************
  5. Procedure Process_File() Public
  6. Local Command As Integer
  7. Local Ret As Integer
  8.  
  9. Local AppStruct As Structure
  10.     Local AvRefNum As Word
  11.     Local Atype As Integer
  12.     Local AversNum As Byte
  13.     Local Afiller As Byte
  14.     Local AfileName As Str255 [64]
  15. Endstruct
  16.  
  17.     * find out if we have been asked to open a file or print a file
  18.     Command=GetAppMessage()
  19.  
  20.     Do Case
  21.         Case Command=0 ' Open file
  22.             * get details of the file to open (first one only)
  23.                     AppStruct=GetAppFile(1)
  24.                         Do Show_File_Details(Integer(AvRefNum),String(AfileName))
  25.                      Break
  26.             Case Command=1 ' Print file
  27.             * reject as this program does not print files
  28.             Ret=MsgBox("FileInfo does not print files","End","")
  29.             End
  30.         Endcase
  31. Return
  32.  
  33. *********************************************************
  34. *                                                                                                              *
  35. *        Show File Details                                                                           *
  36. *********************************************************
  37. Procedure Show_File_Details(RefNum,fileName)
  38. Parameter RefNum As Integer
  39. Parameter fileName As String
  40. Local Ret As Word
  41. Local fName As Str255
  42.  
  43. Local paramBlock As Structure
  44.     Local Filler1 As Char [12]
  45.     Local ioCompletion As Integer
  46.     Local ioResult As Word
  47.     Local ioNamePtr As Integer
  48.     Local ioVRefNum As Word
  49.     Local ioFRefNum As Word
  50.     Local ioFVersNum As Byte
  51.     Local Filler2 As Byte
  52.     Local ioFDirIndex As Word
  53.     Local ioFlAttrib As Byte
  54.     Local Filler3 As Byte
  55.     Local pFInfo As Char [16]
  56.     Local ioDirID As Integer
  57.     Local Filler4 As Char [56]
  58. Endstruct
  59.  
  60. Local FInfo As Structure
  61.     Local fdType as Integer
  62.     Local fdCreator As Integer
  63.     Local fdFlags As Word
  64.     Local fdLocation As Integer
  65.     Local fdFldr As Word
  66. Endstruct
  67.  
  68. Local UserItemType As Word
  69. Local DialogItem As Integer
  70.  
  71. Local UserItemRect As Structure
  72.         Local R1 As Word
  73.         Local R2 As Word
  74.         Local R3 As Word
  75.         Local R4 As Word
  76. Endstruct
  77.  
  78.         * Set up paramBlock for PBGetCatInfo call
  79.     ioCompletion=0
  80.     fName=Str255(fileName)
  81.     ioNamePtr=Varptr(fName)
  82.     ioVRefNum=Word(RefNum)
  83.     ioFDirIndex=0
  84.     ioDirID=0
  85.  
  86.     Ret=_PBGetCatInfo(paramBlock)
  87.  
  88.     If Integer(Ret)=0
  89.         FInfo=pFInfo
  90.         FInfoForm.FType.Value=IntToChars(fdType)
  91.         FInfoForm.FCreator.Value=IntToChars(fdCreator)
  92.     Else
  93.         Ret=MsgBox("Error in PBGetCatInfo","End","")
  94.         End
  95.     Endif
  96. Return
  97.   
  98. *********************************************************
  99. *                                                                                                              *
  100. *       Convert Integer to Chars                                                                 *
  101. *********************************************************  
  102. Function IntToChars(InInt) Returning String
  103. Parameter InInt As Integer
  104. Local I As Integer
  105. Local ChString As String [4]
  106.  
  107.         * File types and Creator types are stored as a 32 bit integer with 4
  108.         * characters encoded within each byte. Use Peek and Varptr to get each byte.
  109.     ChString=""
  110.     For I=1 to 4
  111.         ChString=ChString+Chr(Peek(Varptr(InInt)+I-1))
  112.     Next I
  113.  
  114. Return ChString
  115.  
  116. *********************************************************
  117. *                                                                                                              *
  118. *       Click Event on OK Button                                                                 *
  119. ********************************************************* 
  120. Procedure FInfoForm.OKButton.Click()
  121.     FInfoForm.CloseWindow
  122.     End
  123. Return
  124.  
  125.